package com.pureut.storage.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.pureut.storage.domain.CheckManagement;
import com.pureut.storage.dto.*;
import com.pureut.storage.export.CheckManagementExport;
import com.pureut.storage.vo.*;

import java.util.List;

/**
 * @author: CM
 * @date: 2023/1/13    11:11
 */
public interface CheckManagementService extends IService<CheckManagement> {
    /**
     * 新增盘点明细
     * @param addCheckVo
     * @return
     */
    boolean addCheck(AddCheckVo addCheckVo) throws Exception;

    /**
     * 查看盘点单
     * @param id
     * @return
     */
    CheckDto view(Long id);

    /**
     * 盘点信息列表查询
     * @param checkManagementVo
     * @return
     */
    List<CheckListDto> getList(CheckManagementVo checkManagementVo);

    /**
     * 查看单据明细
     * @param docNum
     * @return
     */
    List<CheckDetailListDto> getListDetail(String docNum);

    /**
     * 查看物料列表
     * @param docNum
     * @return
     */
    List<CheckManagmentMaterialDto> getmaterialList(String docNum);

    /**
     * 修改
     * @param addCheckVo
     * @return
     */
    boolean updateCheck(AddCheckVo addCheckVo);

    /**
     * 盘点
     * @param pdVo
     * @return
     */
    PdDto pdCheck(PdVo pdVo);

    /**
     * 弹窗体提醒
     * @param pdVo
     * @return
     */
    PdDto openWindow(PdVo pdVo) throws Exception;

    /**
     * 盘点完成
     * @param pdVo
     * @return
     */
    PdDto checkInventory(PdVo pdVo);

    /**
     * 删除单据
     * @param ids
     * @return
     */
    boolean delete(String ids);

    /**
     * 关结单据
     * @param checkCloseVo
     * @return
     */
    boolean close(CheckCloseVo checkCloseVo);

    /**
     * 导出
     * @param checkManagementVo
     * @return
     */
    List<CheckManagementExport> getInfoExport(CheckManagementVo checkManagementVo);

    /**
     * 审核单据
     * @param orderReviewVo
     * @return
     */
    boolean checkManagementReview(OrderReviewVo orderReviewVo);

    /**
     * 盘点物料下拉
     * @param id
     * @return
     */
    List<CheckMaterialDto> getMaterial(Long id);

    /**
     * 盘点审核单据明细
     * @param id
     * @return
     */
    List<CheckManagementDto> reviceDocDetail(Long id);

    /**
     * 盘点审核物料明细
     * @param id
     * @return
     */
    List<CheckManagmentMaterialDto> reviceMaterialDetail(Long id);

    /**
     * 审核回显
     * @param id
     * @return
     */
    CheckDto getRevice(Long id);

    /**
     * 审核OK
     * @param pdVo
     * @return
     */
    boolean reviceOk(PdVo pdVo);

    /**
     * 审核NG
     * @param pdVo
     * @return
     */
    boolean reviceNg(PdVo pdVo);

    /**
     * 审核单据
     * @param orderReviewVo
     * @return
     */
    boolean checkReview(OrderReviewVo orderReviewVo) throws Exception;

    List<CheckListPdaDto> getCheckListPda();

    /**
     * 手持Pda明细列表
     * @param checkListDetailPdaVo
     * @return
     */
    CheckListDetailPdaInfoDto getCheckDetailListPda(CheckListDetailPdaVo checkListDetailPdaVo);
}
